package gob.pgr.xml;

import java.io.StringWriter;
import java.lang.reflect.Field;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.jdom2.Comment;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

public class JdomXml {

	public String getXml(List<?> listaObjetos) throws Exception {
		Document document = new Document();
		
		String nombreRaiz = "objeto";
		if (listaObjetos != null && !listaObjetos.isEmpty())
			nombreRaiz = StringUtils.trimToEmpty(StringUtils.lowerCase(listaObjetos.get(0).getClass().getSimpleName()));
		
		Element elementoRaiz = new Element(nombreRaiz + "s");
		
		Comment comment = new Comment("Creacion de Archivo XML mediante JDOM");
		elementoRaiz.addContent(comment);
		
		String nombreClase = nombreRaiz;
		
		for (Object object : listaObjetos) {
			Element elementoHijo = new Element(nombreClase);
			Field[] fields = object.getClass().getDeclaredFields();
			for (Field field : fields) {
				field.setAccessible(true);
				String etiqueta = field.getName();
				elementoHijo.addContent(new Element(etiqueta).setText(String.valueOf(field.get(object))));
			}
			elementoRaiz.addContent(elementoHijo);
		}
		
		document.setContent(elementoRaiz);
		
		StringWriter stringWriter = new StringWriter();
		XMLOutputter xmlOutputter = new XMLOutputter();
		xmlOutputter.setFormat(Format.getPrettyFormat());
		xmlOutputter.output(document, stringWriter);
		
		String xml = stringWriter.toString();
		
		return xml;
	}
	
}
